{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from IPython.core.display import HTML"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(3,)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = np.array([1,2,3]) # 1D vector\n",
    "print(x.shape)\n",
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1],\n",
       "       [2],\n",
       "       [3]])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = x.reshape(-1,1) # vertical 2D vector\n",
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(1, 3)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z = x.reshape(1,-1) # horiz 2D vector\n",
    "print(z)\n",
    "z.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1,  2,  8,  9],\n",
       "       [ 3,  4, 22,  1]])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = np.array([[1,2,8,9],[3,4,22,1]])\n",
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  0.,   1.,   2., ...,  97.,  98.,  99.],\n",
       "       [  1.,   2.,   3., ...,  98.,  99., 100.],\n",
       "       [  2.,   3.,   4., ...,  99., 100., 101.],\n",
       "       ...,\n",
       "       [ 97.,  98.,  99., ..., 194., 195., 196.],\n",
       "       [ 98.,  99., 100., ..., 195., 196., 197.],\n",
       "       [ 99., 100., 101., ..., 196., 197., 198.]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B = np.ones((100,100))\n",
    "for i in range(100):\n",
    "    for j in range(100):\n",
    "        B[i,j] = i+j\n",
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "YELLOW = \"#fefecd\" # \"#fbfbd0\" # \"#FBFEB0\"\n",
    "BLUE = \"#D9E6F5\"\n",
    "GREEN = \"#cfe2d4\"\n",
    "class Prefs: pass\n",
    "prefs = Prefs()\n",
    "prefs.max_str_len = 20         # how many chars before we abbreviate with ...?\n",
    "prefs.max_horiz_array_len = 40 # how many chars before it's too wide and we go vertical?\n",
    "prefs.max_list_elems = 10      # how many elements max to display in list (unused so far)\n",
    "prefs.float_precision = 5      # how many decimal places to show for floats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table BORDER=\"0\" CELLPADDING=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">0.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">1.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">2.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">3.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">4.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">95.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">96.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">97.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">1.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">2.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">3.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">4.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">5.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">96.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">97.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">2.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">3.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">4.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">5.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">6.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">97.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">101.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">3.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">4.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">5.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">6.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">7.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">101.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">102.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">4.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">5.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">6.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">7.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">8.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">101.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">102.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">103.</font></td>\n",
       "</tr>\n",
       "<tr><td bgcolor=\"#fefecd\" cellpadding=\"2\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">&#8942;</font></td><td bgcolor=\"#fefecd\" cellpadding=\"2\" border=\"0\" colspan=\"10\"></td></tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">95.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">96.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">97.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">190.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">191.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">192.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">193.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">194.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">96.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">97.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">191.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">192.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">193.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">194.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">195.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">97.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">101.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">192.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">193.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">194.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">195.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">196.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">98.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">101.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">102.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">193.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">194.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">195.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">196.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">197.</font></td>\n",
       "</tr>\n",
       "<tr><td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">99.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">100.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">101.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">102.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">103.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">194.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">195.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">196.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">197.</font></td>\n",
       "<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"#fefecd\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">198.</font></td>\n",
       "</tr>\n",
       "</table>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def gr_1darray_html(data, bgcolor=YELLOW):\n",
    "    if not isinstance(data,np.ndarray):\n",
    "        return \" \"\n",
    "    if data.ndim > 1:\n",
    "        return gr_1darray_html(data, bgcolor)\n",
    "    if data.ndim > 2:\n",
    "        return \" \"\n",
    "\n",
    "    ncols = len(data)\n",
    "    header = '<table BORDER=\"0\" CELLPADDING=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\\n'\n",
    "    tail = \"</table>\\n\"\n",
    "\n",
    "    # grab slice of max elements from matrix\n",
    "    coloversize = False\n",
    "    midpoint = prefs.max_list_elems//2\n",
    "    if ncols > prefs.max_list_elems:\n",
    "        colslice = list(np.arange(0,midpoint)) + list(np.arange(ncols-midpoint,ncols))\n",
    "        data = data[colslice]\n",
    "        ncols=len(colslice)\n",
    "        coloversize = True\n",
    "\n",
    "    cells = []\n",
    "    for j in range(ncols):\n",
    "        if coloversize and j==midpoint:\n",
    "            cells.append( '<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"%s\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\\n' % bgcolor)\n",
    "        value = data[j]\n",
    "        if isinstance(value, float):\n",
    "            if str(value).endswith('.0'):\n",
    "                value = str(value)[:-1]             \n",
    "            else:\n",
    "                value = round(value, prefs.float_precision)\n",
    "        if isinstance(value, float) and str(value).endswith('.0'):\n",
    "            value = str(value)[:-1]                \n",
    "        if len(str(value)) > prefs.max_str_len:\n",
    "            value = abbrev_and_escape(str(value))\n",
    "        cell = '<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"%s\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">%s</font></td>\\n' % (bgcolor, value)\n",
    "        cells.append( cell )\n",
    "\n",
    "    row = '<tr>' + ''.join(cells) + '</tr>\\n'\n",
    "\n",
    "    return header + row + tail\n",
    "\n",
    "def gr_2darray_html(data, bgcolor=YELLOW):\n",
    "    if len(data)==0:\n",
    "        return \" \"\n",
    "    if not isinstance(data,np.ndarray):\n",
    "        return \" \"\n",
    "    if data.ndim == 1:\n",
    "        return gr_1darray_html(data, bgcolor)\n",
    "    if data.ndim > 2:\n",
    "        return \" \"\n",
    "\n",
    "    nrows,ncols = data.shape\n",
    "    header = '<table BORDER=\"0\" CELLPADDING=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\\n'\n",
    "    tail = \"</table>\\n\"\n",
    "\n",
    "    # grab slice of max elements from matrix\n",
    "    coloversize = rowoversize = False\n",
    "    midpoint = prefs.max_list_elems//2\n",
    "    if nrows > prefs.max_list_elems:\n",
    "        rowslice = list(np.arange(0,midpoint)) + list(np.arange(nrows-midpoint,nrows))\n",
    "        data = data[rowslice]\n",
    "        nrows=len(rowslice)\n",
    "        rowoversize = True\n",
    "    if ncols > prefs.max_list_elems:\n",
    "        colslice = list(np.arange(0,midpoint)) + list(np.arange(ncols-midpoint,ncols))\n",
    "        data = data[:,colslice]\n",
    "        ncols=len(colslice)\n",
    "        coloversize = True\n",
    "\n",
    "    rows = []\n",
    "    for i in range(nrows):\n",
    "        if rowoversize and i==midpoint:\n",
    "            rows.append( '<tr><td bgcolor=\"%s\" cellpadding=\"2\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">&#8942;</font></td><td bgcolor=\"%s\" cellpadding=\"2\" border=\"0\" colspan=\"%d\"></td></tr>\\n' % (bgcolor,bgcolor,ncols))\n",
    "        cells = []\n",
    "        for j in range(ncols):\n",
    "            if coloversize and j==midpoint:\n",
    "                cells.append( '<td cellspacing=\"0\" cellpadding=\"2\" bgcolor=\"%s\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">...</font></td>\\n' % bgcolor)\n",
    "            value = data[i,j]\n",
    "            if isinstance(value, float):\n",
    "                if str(value).endswith('.0'):\n",
    "                    value = str(value)[:-1]             \n",
    "                else:\n",
    "                    value = round(value, prefs.float_precision)\n",
    "            if len(str(value)) > prefs.max_str_len:\n",
    "                value = abbrev_and_escape(str(value))\n",
    "            cell = '<td cellspacing=\"0\" cellpadding=\"3\" bgcolor=\"%s\" border=\"0\" align=\"center\"><font color=\"#444443\" point-size=\"10\">%s</font></td>\\n' % (bgcolor, value)\n",
    "            cells.append( cell )\n",
    "        row = '<tr>' + ''.join(cells) + '</tr>\\n'\n",
    "        rows.append(row)\n",
    "\n",
    "    return header + ''.join(rows) + tail\n",
    "\n",
    "h = gr_2darray_html(np.array([1,3,4]))\n",
    "h = gr_2darray_html(B)\n",
    "\n",
    "#print(h)\n",
    "HTML(h)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"60pt\" height=\"42pt\"\n",
       " viewBox=\"0.00 0.00 60.00 42.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 38)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-38 56,-38 56,4 -4,4\"/>\n",
       "<!-- node4768272096 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node4768272096</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" stroke-width=\".5\" points=\"52,-34 0,-34 0,0 52,0 52,-34\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-17 1,-33 12,-33 12,-17 1,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"3.7192\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"12,-17 12,-33 23,-33 23,-17 12,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"14.7192\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23,-17 23,-33 40,-33 40,-17 23,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"28.7192\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">8</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-17 40,-33 51,-33 51,-17 40,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"42.7192\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">9</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-1 1,-17 12,-17 12,-1 1,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"3.7192\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"12,-1 12,-17 23,-17 23,-1 12,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"14.7192\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23,-1 23,-17 40,-17 40,-1 23,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"25.9385\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">22</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"40,-1 40,-17 51,-17 51,-1 40,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"42.7192\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x11c3e0a90>"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import graphviz\n",
    "\n",
    "def gr_ndarray_node(nodename, data, bgcolor=YELLOW):\n",
    "    shape=\"box\"\n",
    "    html = gr_2darray_html(data, bgcolor=bgcolor)\n",
    "    return '%s [shape=\"%s\", space=\"0.0\", margin=\"0.01\", fontcolor=\"#444443\", fontname=\"Helvetica\", label=<%s>];\\n' % (nodename,shape,html)\n",
    "\n",
    "def myviz(data):\n",
    "    s = \"\"\"\n",
    "    digraph G {\n",
    "        nodesep=.05;\n",
    "        node [penwidth=\"0.5\", width=.1,height=.1];\n",
    "    \"\"\"\n",
    "\n",
    "    s += gr_ndarray_node('node%d'%id(data), data)\n",
    "\n",
    "    s += \"}\\n\"\n",
    "    return graphviz.Source(s)\n",
    "myviz(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"266pt\" height=\"184pt\"\n",
       " viewBox=\"0.00 0.00 266.00 184.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 180)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-180 262,-180 262,4 -4,4\"/>\n",
       "<!-- node4768301424 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node4768301424</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" stroke-width=\".5\" points=\"258,-176 0,-176 0,0 258,0 258,-176\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-159 1,-175 20,-175 20,-159 1,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"6.3301\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">0.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-159 20,-175 45,-175 45,-159 20,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"28.3301\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-159 45,-175 70,-175 70,-159 45,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"53.3301\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-159 70,-175 95,-175 95,-159 70,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"78.3301\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-159 95,-175 120,-175 120,-159 95,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"103.3301\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-159 120,-175 132,-175 132,-159 120,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-159 132,-175 157,-175 157,-159 132,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"137.5493\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">95.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-159 157,-175 182,-175 182,-159 157,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"162.5493\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-159 182,-175 207,-175 207,-159 182,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"187.5493\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-159 207,-175 232,-175 232,-159 207,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"212.5493\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-159 232,-175 257,-175 257,-159 232,-159\"/>\n",
       "<text text-anchor=\"start\" x=\"237.5493\" y=\"-164\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-143 1,-159 20,-159 20,-143 1,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"6.3301\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">1.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-143 20,-159 45,-159 45,-143 20,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"28.3301\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-143 45,-159 70,-159 70,-143 45,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"53.3301\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-143 70,-159 95,-159 95,-143 70,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"78.3301\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-143 95,-159 120,-159 120,-143 95,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"103.3301\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-143 120,-159 132,-159 132,-143 120,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-143 132,-159 157,-159 157,-143 132,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"137.5493\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-143 157,-159 182,-159 182,-143 157,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"162.5493\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-143 182,-159 207,-159 207,-143 182,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"187.5493\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-143 207,-159 232,-159 232,-143 207,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"212.5493\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-143 232,-159 257,-159 257,-143 232,-143\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-148\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-127 1,-143 20,-143 20,-127 1,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"6.3301\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">2.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-127 20,-143 45,-143 45,-127 20,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"28.3301\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-127 45,-143 70,-143 70,-127 45,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"53.3301\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-127 70,-143 95,-143 95,-127 70,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"78.3301\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-127 95,-143 120,-143 120,-127 95,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"103.3301\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-127 120,-143 132,-143 132,-127 120,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-127 132,-143 157,-143 157,-127 132,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"137.5493\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-127 157,-143 182,-143 182,-127 157,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"162.5493\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-127 182,-143 207,-143 207,-127 182,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"187.5493\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-127 207,-143 232,-143 232,-127 207,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-127 232,-143 257,-143 257,-127 232,-127\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-132\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-111 1,-127 20,-127 20,-111 1,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"6.3301\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">3.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-111 20,-127 45,-127 45,-111 20,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"28.3301\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-111 45,-127 70,-127 70,-111 45,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"53.3301\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-111 70,-127 95,-127 95,-111 70,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"78.3301\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-111 95,-127 120,-127 120,-111 95,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"103.3301\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">7.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-111 120,-127 132,-127 132,-111 120,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-111 132,-127 157,-127 157,-111 132,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"137.5493\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-111 157,-127 182,-127 182,-111 157,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"162.5493\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-111 182,-127 207,-127 207,-111 182,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"184.7686\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-111 207,-127 232,-127 232,-111 207,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-111 232,-127 257,-127 257,-111 232,-111\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-116\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-95 1,-111 20,-111 20,-95 1,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"6.3301\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">4.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-95 20,-111 45,-111 45,-95 20,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"28.3301\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">5.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-95 45,-111 70,-111 70,-95 45,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"53.3301\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">6.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-95 70,-111 95,-111 95,-95 70,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"78.3301\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">7.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-95 95,-111 120,-111 120,-95 95,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"103.3301\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">8.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-95 120,-111 132,-111 132,-95 120,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-95 132,-111 157,-111 157,-95 132,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"137.5493\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-95 157,-111 182,-111 182,-95 157,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"159.7686\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-95 182,-111 207,-111 207,-95 182,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"184.7686\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-95 207,-111 232,-111 232,-95 207,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-95 232,-111 257,-111 257,-95 232,-95\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-100\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">103.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-81 1,-95 20,-95 20,-81 1,-81\"/>\n",
       "<text text-anchor=\"start\" x=\"8.4468\" y=\"-85\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">⋮</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-81 20,-95 257,-95 257,-81 20,-81\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-65 1,-81 20,-81 20,-65 1,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"3.5493\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">95.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-65 20,-81 45,-81 45,-65 20,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"25.5493\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-65 45,-81 70,-81 70,-65 45,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"50.5493\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-65 70,-81 95,-81 95,-65 70,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"75.5493\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-65 95,-81 120,-81 120,-65 95,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"100.5493\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-65 120,-81 132,-81 132,-65 120,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-65 132,-81 157,-81 157,-65 132,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"134.7686\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">190.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-65 157,-81 182,-81 182,-65 157,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"159.7686\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">191.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-65 182,-81 207,-81 207,-65 182,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"184.7686\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">192.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-65 207,-81 232,-81 232,-65 207,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-65 232,-81 257,-81 257,-65 232,-65\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-70\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-49 1,-65 20,-65 20,-49 1,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"3.5493\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">96.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-49 20,-65 45,-65 45,-49 20,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"25.5493\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-49 45,-65 70,-65 70,-49 45,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"50.5493\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-49 70,-65 95,-65 95,-49 70,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"75.5493\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-49 95,-65 120,-65 120,-49 95,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"97.7686\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-49 120,-65 132,-65 132,-49 120,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-49 132,-65 157,-65 157,-49 132,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"134.7686\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">191.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-49 157,-65 182,-65 182,-49 157,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"159.7686\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">192.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-49 182,-65 207,-65 207,-49 182,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"184.7686\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-49 207,-65 232,-65 232,-49 207,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-49 232,-65 257,-65 257,-49 232,-49\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-54\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-33 1,-49 20,-49 20,-33 1,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"3.5493\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">97.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-33 20,-49 45,-49 45,-33 20,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"25.5493\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-33 45,-49 70,-49 70,-33 45,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"50.5493\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-33 70,-49 95,-49 95,-33 70,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"72.7686\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-33 95,-49 120,-49 120,-33 95,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"97.7686\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-33 120,-49 132,-49 132,-33 120,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-33 132,-49 157,-49 157,-33 132,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"134.7686\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">192.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-33 157,-49 182,-49 182,-33 157,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"159.7686\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-33 182,-49 207,-49 207,-33 182,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"184.7686\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-33 207,-49 232,-49 232,-33 207,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-33 232,-49 257,-49 257,-33 232,-33\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-38\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">196.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-17 1,-33 20,-33 20,-17 1,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"3.5493\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">98.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-17 20,-33 45,-33 45,-17 20,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"25.5493\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-17 45,-33 70,-33 70,-17 45,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"47.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-17 70,-33 95,-33 95,-17 70,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"72.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-17 95,-33 120,-33 120,-17 95,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"97.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-17 120,-33 132,-33 132,-17 120,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-17 132,-33 157,-33 157,-17 132,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"134.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">193.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-17 157,-33 182,-33 182,-17 157,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"159.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-17 182,-33 207,-33 207,-17 182,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"184.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-17 207,-33 232,-33 232,-17 207,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">196.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-17 232,-33 257,-33 257,-17 232,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">197.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1,-1 1,-17 20,-17 20,-1 1,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"3.5493\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">99.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20,-1 20,-17 45,-17 45,-1 20,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"22.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">100.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"45,-1 45,-17 70,-17 70,-1 45,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"47.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">101.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"70,-1 70,-17 95,-17 95,-1 70,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"72.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">102.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"95,-1 95,-17 120,-17 120,-1 95,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"97.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">103.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"120,-1 120,-17 132,-17 132,-1 120,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"121.8325\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">...</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"132,-1 132,-17 157,-17 157,-1 132,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"134.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">194.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"157,-1 157,-17 182,-17 182,-1 157,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"159.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">195.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"182,-1 182,-17 207,-17 207,-1 182,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"184.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">196.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"207,-1 207,-17 232,-17 232,-1 207,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"209.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">197.</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"232,-1 232,-17 257,-17 257,-1 232,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"234.7686\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">198.</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x11c39bc18>"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myviz(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"101pt\" height=\"42pt\"\n",
       " viewBox=\"0.00 0.00 101.00 42.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 38)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-38 97,-38 97,4 -4,4\"/>\n",
       "<!-- node4768270016 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node4768270016</title>\n",
       "<polygon fill=\"none\" stroke=\"#000000\" stroke-width=\".5\" points=\"93,-34 0,-34 0,0 93,0 93,-34\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-17 1.5,-33 23.5,-33 23.5,-17 1.5,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"4.4385\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">abc</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23.5,-17 23.5,-33 92.5,-33 92.5,-17 23.5,-17\"/>\n",
       "<text text-anchor=\"start\" x=\"55.5\" y=\"-22\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">x</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-1 1.5,-17 23.5,-17 23.5,-1 1.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"8.6084\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">hi</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"23.5,-1 23.5,-17 92.5,-17 92.5,-1 23.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"26.0396\" y=\"-6\" font-family=\"Helvetica,sans-Serif\" font-size=\"10.00\" fill=\"#444443\">you are yellow</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x11c369b00>"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "myviz(np.array([['abc','x'],['hi','you are yellow']]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hi\n"
     ]
    }
   ],
   "source": [
    "import subprocess\n",
    "import sys\n",
    "\n",
    "reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'])\n",
    "installed_packages = set([r.decode().split('==')[0] for r in reqs.split()])\n",
    "if 'numpy' in installed_packages:\n",
    "    print('hi')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sys\n",
    "\n",
    "if 'numpy' not in sys.modules:\n",
    "    import numpy\n",
    "    print(\"import\")\n",
    "np = sys.modules['numpy']\n",
    "np.ndarray"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(None, '/Users/parrt/anaconda3/lib/python3.6/site-packages/numpy', ('', '', 5))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import imp\n",
    "\n",
    "imp.find_module('numpy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"129pt\" height=\"40pt\"\n",
       " viewBox=\"0.00 0.00 129.00 40.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 36)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-36 125,-36 125,4 -4,4\"/>\n",
       "<!-- node140250019940736 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140250019940736</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"121,-32 0,-32 0,0 121,0 121,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-19 1.5,-31 20.5,-31 20.5,-19 1.5,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1.5,-19 20.5,-19 20.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"8\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20.5,-19 20.5,-31 33.5,-31 33.5,-19 20.5,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"20.5,-19 33.5,-19 33.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"24\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-19 33.5,-31 52.5,-31 52.5,-19 33.5,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"33.5,-19 52.5,-19 52.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"40\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"52.5,-19 52.5,-31 65.5,-31 65.5,-19 52.5,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"52.5,-19 65.5,-19 65.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"56\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"65.5,-19 65.5,-31 78.5,-31 78.5,-19 65.5,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"65.5,-19 78.5,-19 78.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"69\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">4</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"78.5,-19 78.5,-31 103.5,-31 103.5,-19 78.5,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"78.5,-19 103.5,-19 103.5,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"88\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">5</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-19 103.5,-31 120.5,-31 120.5,-19 103.5,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"103.5,-19 120.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"109\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">6</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"1.5,-1 1.5,-19 20.5,-19 20.5,-1 1.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"20.5,-1 20.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"4.5\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">10</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"20.5,-1 20.5,-19 33.5,-19 33.5,-1 20.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"33.5,-1 33.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"23.5\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">3</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"33.5,-1 33.5,-19 52.5,-19 52.5,-1 33.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"52.5,-1 52.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"36.5\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">13</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"52.5,-1 52.5,-19 65.5,-19 65.5,-1 52.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"65.5,-1 65.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"55.5\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"65.5,-1 65.5,-19 78.5,-19 78.5,-1 65.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"78.5,-1 78.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"68.5\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">7</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"78.5,-1 78.5,-19 103.5,-19 103.5,-1 78.5,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"103.5,-1 103.5,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"81.5\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">nan</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"103.5,-1 103.5,-19 120.5,-19 120.5,-1 103.5,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"105.5\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">21</text>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7f8e709544f0>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from lolviz import *\n",
    "a=[10,3,13,2,7,np.nan,21]\n",
    "objviz(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Title: G Pages: 1 -->\n",
       "<svg width=\"154pt\" height=\"61pt\"\n",
       " viewBox=\"0.00 0.00 154.00 61.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 57)\">\n",
       "<title>G</title>\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-57 150,-57 150,4 -4,4\"/>\n",
       "<!-- node140250019834784 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>node140250019834784</title>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"38,-53 0,-53 0,-19 38,-19 38,-53\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2,-37 2,-51 36,-51 36,-37 2,-37\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"2,-37 36,-37 \"/>\n",
       "<text text-anchor=\"start\" x=\"3\" y=\"-41.2\" font-family=\"Times,serif\" font-style=\"italic\" font-size=\"11.00\" fill=\"#444443\">globals</text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2,-35 2,-37 36,-37 36,-35 2,-35\"/>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"2,-21 2,-35 17,-35 17,-21 2,-21\"/>\n",
       "<polyline fill=\"none\" stroke=\"#444443\" points=\"17,-21 17,-35 \"/>\n",
       "<text text-anchor=\"start\" x=\"6\" y=\"-25.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">a </text>\n",
       "<polygon fill=\"#d9e6f5\" stroke=\"transparent\" points=\"19,-21 19,-35 36,-35 36,-21 19,-21\"/>\n",
       "<text text-anchor=\"start\" x=\"20\" y=\"-25.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;&#160;&#160;</text>\n",
       "</g>\n",
       "<!-- node140249746253632 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>node140249746253632</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"72,-44 46,-44 46,-12 72,-12 72,-44\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"47,-31 47,-43 60,-43 60,-31 47,-31\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"47,-31 60,-31 60,-43 \"/>\n",
       "<text text-anchor=\"start\" x=\"50.5\" y=\"-34.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60,-31 60,-43 71,-43 71,-31 60,-31\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"60,-31 71,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"62.5\" y=\"-34.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"47,-13 47,-31 60,-31 60,-13 47,-13\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"60,-13 60,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"50\" y=\"-19.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">9</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"60,-13 60,-31 71,-31 71,-13 60,-13\"/>\n",
       "<text text-anchor=\"start\" x=\"62\" y=\"-19.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;</text>\n",
       "</g>\n",
       "<!-- node140250019834784&#45;&gt;node140249746253632 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>node140250019834784:c&#45;&gt;node140249746253632</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M32.24,-28C34.62,-28 38.06,-28 41.64,-28\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"30.6\" cy=\"-28\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"41.87,-29.4 45.87,-28 41.87,-26.6 41.87,-29.4\"/>\n",
       "</g>\n",
       "<!-- node140249750860288 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>node140249750860288</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"106,-38 80,-38 80,-6 106,-6 106,-38\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"81,-25 81,-37 94,-37 94,-25 81,-25\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"81,-25 94,-25 94,-37 \"/>\n",
       "<text text-anchor=\"start\" x=\"84.5\" y=\"-28.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"94,-25 94,-37 105,-37 105,-25 94,-25\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"94,-25 105,-25 \"/>\n",
       "<text text-anchor=\"start\" x=\"96.5\" y=\"-28.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"81,-7 81,-25 94,-25 94,-7 81,-7\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"94,-7 94,-25 \"/>\n",
       "<text text-anchor=\"start\" x=\"84\" y=\"-13.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">2</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"94,-7 94,-25 105,-25 105,-7 94,-7\"/>\n",
       "<text text-anchor=\"start\" x=\"96\" y=\"-13.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;</text>\n",
       "</g>\n",
       "<!-- node140249746253632&#45;&gt;node140249750860288 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>node140249746253632:c&#45;&gt;node140249750860288</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M70.58,-22C72.03,-22 73.82,-22 75.74,-22\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"68.6\" cy=\"-22\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"75.79,-23.4 79.79,-22 75.79,-20.6 75.79,-23.4\"/>\n",
       "</g>\n",
       "<!-- node140249746252800 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>node140249746252800</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0.5\" points=\"146,-32 114,-32 114,0 146,0 146,-32\"/>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"115,-19 115,-31 134,-31 134,-19 115,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"115,-19 134,-19 134,-31 \"/>\n",
       "<text text-anchor=\"start\" x=\"121.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">0</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"134,-19 134,-31 145,-31 145,-19 134,-19\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"134,-19 145,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"136.5\" y=\"-22.8\" font-family=\"Helvetica,sans-Serif\" font-size=\"9.00\" fill=\"#444443\">1</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"115,-1 115,-19 134,-19 134,-1 115,-1\"/>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"134,-1 134,-19 \"/>\n",
       "<text text-anchor=\"start\" x=\"118\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\">45</text>\n",
       "<polygon fill=\"#fefecd\" stroke=\"transparent\" points=\"134,-1 134,-19 145,-19 145,-1 134,-1\"/>\n",
       "<text text-anchor=\"start\" x=\"136\" y=\"-7.2\" font-family=\"Helvetica,sans-Serif\" font-size=\"11.00\" fill=\"#444443\"> &#160;</text>\n",
       "</g>\n",
       "<!-- node140249750860288&#45;&gt;node140249746252800 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>node140249750860288:c&#45;&gt;node140249746252800</title>\n",
       "<path fill=\"none\" stroke=\"#444443\" stroke-width=\"0.5\" d=\"M104.46,-16C105.88,-16 107.64,-16 109.57,-16\"/>\n",
       "<ellipse fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" cx=\"102.6\" cy=\"-16\" rx=\"1.6\" ry=\"1.6\"/>\n",
       "<polygon fill=\"#444443\" stroke=\"#444443\" stroke-width=\"0.5\" points=\"109.69,-17.4 113.69,-16 109.69,-14.6 109.69,-17.4\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.files.Source at 0x7f8e704dfe20>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = (9,(2,(45,None)))\n",
    "callsviz(varnames=['a'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
